package cn.rengy.tpa.wxmp.wxapp.message;

import com.alibaba.fastjson.JSONObject;

import cn.rengy.tpa.wxmp.token.AccessToken;
import cn.rengy.tpa.wxmp.util.WeChatUtil;

/**
 * 小程序客服消息
 * @author rengy
 *当用户和小程序客服产生特定动作的交互时（具体动作列表请见下方说明），微信将会把消息数据推送给开发者，开发者可以在一段时间内（目前为 48 小时）调用客服接口，通过调用 发送客服消息接口 来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能，方便开发者为用户提供更加优质的服务。
目前允许的动作列表如下，不同动作触发后，允许的客服接口下发消息条数和下发时限不同。
用户动作	允许下发条数限制	下发时限
用户发送消息	5 条	48 小时
 */
public class CustomerMessageApi {

	private static final String TYPING_URL ="https://api.weixin.qq.com/cgi-bin/message/custom/typing?access_token=";
	
	public static enum CustomerTypingCommand  {
		Typing,//对用户下发"正在输入"状态
		CancelTyping//取消对用户的"正在输入"状态
	}
	public static enum Msgtype  {
		text,//文本消息
		image,//图片消息
		link,//图文链接
		miniprogrampage//小程序卡片
	}
	/**
	 * 下发客服当前输入状态给用户
	 *  45072	command字段取值不对
		45080	下发输入状态，需要之前30秒内跟用户有过消息交互
		45081	已经在输入状态，不可重复下发
	 * @param touser
	 * @param command
	 * @return
	 */
	public static int customerTyping(AccessToken accessToken,String touser,CustomerTypingCommand command) {
		JSONObject postObject = new JSONObject();
		postObject.put("touser", touser);
		postObject.put("command", command.name());
		JSONObject resultObject=WeChatUtil.postSuccess(TYPING_URL, postObject.toJSONString(), accessToken);
		return resultObject.getIntValue("errcode");
	}
	private static final String GET_MEDIA_ID_URL="https://api.weixin.qq.com/cgi-bin/media/get?media_id=MEDIA_ID";
	/**
	 * 下载客服消息内的临时素材
	 * https://developers.weixin.qq.com/miniprogram/dev/api/open-api/customer-message/getTempMedia.html
	 * @param accessToken
	 * @param media_id
	 */
	public static void getTempMedia(AccessToken accessToken,String media_id) {
		//&access_token=ACCESS_TOKEN&
		//如果调用成功，会直接返回图片二进制内容，如果请求失败，会返回 JSON 格式的数据
	}
	private static final String SEND_URL="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=";
	
	/**
	 * 发送客服消息
	 * @param accessToken
	 * @param customerMessageRequest
	 */
	public static void sendCustomerMessage(AccessToken accessToken,CustomerMessageRequest customerMessageRequest) {
		WeChatUtil.postSuccess(SEND_URL, JSONObject.toJSONString(customerMessageRequest), accessToken);
	}
	
	private static final String UPLOAD_TEMPMEDIA_URL="https://api.weixin.qq.com/cgi-bin/media/upload?type=image&access_token=";
	
	public static void uploadTempMedia(AccessToken accessToken,String img) {
		
	}
}
